Date: Tue, 14 Jan 1997 23:13:07 GMT
Server: Apache/1.0.5
Content-type: text/html
Content-length: 3274
Last-modified: Tue, 14 Jan 1997 18:37:23 GMT

<html><head>
<title>Introduction</title></head>
<body><h1>
CS A10: Introduction to Computer Programming
</h1>


<h2>What you'll learn
</h2>
How to design and build interactive software systems.<p>
How to use a modern programming environment to code and debug multi-file C and
C++ projects.<p>
How to design language-independent algorithms and data structures.<p>
How to design application program interfaces for new code libraries.<p>
How to write simple C code.<p>
How networked client/server computing works, as exemplified by the World Wide
Web.


<h2>Texts</h2>
<ul>
<li>	Eric Roberts, 
<!WA0><a href="http://heg-school.aw.com/cseng/authors/roberts/asc/asc.html">The
Art and Science of C</a>
<li>	Handouts
<li>	Web pages</ul>

<h2>
Scheduling Note
</h2>
This course follows the schedule of the McCormick School of Engineering. That
means that classes will meet during reading week.

<h2>
Computing Requirements
</h2>
To do the assignments, you <em>must</em> have ready access to one of the following
platforms:
<ul>
<li>	a PC-compatible, 386 or better, with Borland's Turbo C/C++, preferrably
version 4.5
<li>	a Macintosh, preferrably 68030 or better, with Symantec's THINK C/C++
<li>	a Unix machine with GNU C/C++ and X-Windows, with either the Athena or
Motif widget set</ul>

<p>
In addition, no matter which of the platforms you're on,
you also need:
<ul>
<li>	a computer on the Northwestern network with<ul>
<li>	a Web browser, preferrably Netscape 1.1N or better, or the most recent
release of Mosaic
<li>	an FTP program, e.g., FTP on Unix, Fetch on the Macintosh, or FTP Client
for Windows on the PC</ul></ul>

<p>
Course notes, announcements, assignments, and C/C++ code that
you must have, will be available <em>only</em> via the network.

<h2>
Topics</h2>
<h3>
Basic
programming language concepts
</h3>
<ul>
<li>	Constants (integers, floats, strings) and variables
<li>	Reading and writing data
<li>	Expressions: arithmetic, logical
<li>	Control statements: iteration (<tt>for</tt>, <tt>while</tt>), branching
(<tt>if</tt>, <tt>switch</tt>)
<li>	Functions: calling, defining, prototyping
<li>	Files</ul>

<h3>
Basic
computer science concepts
</h3>
<ul>
<li>	Data structures (strings, arrays, pointers)
<li>	Algorithms and algorithm analysis</ul>

<h3>
Software
development
</h3>
<ul>
<li>	Libraries: using, defining (interface and implementation)
<li>	Development environments: files, projects, debuggers</ul>

<h3>
Program
design
</h3>
<ul>
<li>	Requirements analysis
<li>	Algorithm and data structure design
<li>	Modules and application program interfaces (API's)
<li>	Coding for maintainability
<li>	Testing and debugging
<li>	Programming-in-the-large</ul>

<h3>
Application
concepts
</h3>
<ul>
<li>	Graphics
<li>	Graphical interactive interfaces
<li>	Event-driven programming</ul>

<h2>
Assignments and work load</h2>

You learn by doing. There's a lot to learn in this course, so there's a lot of
doing. While the basic concepts will be taught in the lectures and assessed in
the exams, the real learning will occur in the programming assignments.

This is a very time-consuming course. 

<hr><address><i>Comments? </i><!WA1><IMG SRC="http://www.cs.nwu.edu/academics/courses/a10/images/comments.gif"><i> Send mail to </i>
<!WA2><a href="mailto:riesbeck@ils.nwu.edu">Chris
Riesbeck</a><i>.</i></address>
</body></html>